home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1992 June: ROMin Holiday / ADC Developer CD (1992-06) (''ROMin Holiday'')_iso / Developer Connection - 06-1992.iso / Developer Essentials / MPW Interfaces & Libraries / CIncludes / DatabaseAccess.h < prev    next >
Encoding:
C/C++ Source or Header  |  1992-01-29  |  6.8 KB  |  222 lines  |  [TEXT/MPS ]

  1.  
  2. /************************************************************
  3.  
  4. Created: Tuesday, September 10, 1991 at 12:57 PM
  5.  DatabaseAccess.h
  6.  C Interface to the Macintosh Libraries
  7.  
  8.  
  9.   Copyright Apple Computer, Inc. 1989-1991
  10.   All rights reserved
  11.  
  12. ************************************************************/
  13.  
  14.  
  15. #ifndef __DATABASEACCESS__
  16. #define __DATABASEACCESS__
  17.  
  18. #ifndef __RESOURCES__
  19. #include <Resources.h>
  20. #endif
  21.  
  22.  
  23. enum {
  24.  
  25.  
  26. /* error and status codes */
  27.  rcDBNull = -800,
  28.  rcDBValue = -801,
  29.  rcDBError = -802,
  30.  rcDBBadType = -803,
  31.  rcDBBreak = -804,
  32.  rcDBExec = -805,
  33.  rcDBBadSessID = -806,
  34.  rcDBBadSessNum = -807,            /* bad session number for DBGetConnInfo */
  35.  rcDBBadDDEV = -808,            /* bad ddev specified on DBInit */
  36.  rcDBAsyncNotSupp = -809,        /* ddev does not support async calls */
  37.  rcDBBadAsyncPB = -810,            /* tried to kill a bad pb */
  38.  rcDBNoHandler = -811,            /* no app handler for specified data type */
  39.  rcDBWrongVersion = -812,        /* incompatible versions */
  40.  rcDBPackNotInited = -813,        /* attempt to call other routine before InitDBPack */
  41.  
  42. /* messages for status functions for DBStartQuery */
  43.  kDBUpdateWind = 0,
  44.  kDBAboutToInit = 1,
  45.  kDBInitComplete = 2,
  46.  kDBSendComplete = 3,
  47.  kDBExecComplete = 4,
  48.  kDBStartQueryComplete = 5
  49. };
  50. enum {
  51.  
  52. /* messages for status functions for DBGetQueryResults */
  53.  kDBGetItemComplete = 6,
  54.  kDBGetQueryResultsComplete = 7,
  55.  
  56. /* data type codes */
  57.  
  58. #define typeNone 'none'
  59. #define typeDate 'date'
  60. #define typeTime 'time'
  61. #define typeTimeStamp 'tims'
  62. #define typeDecimal 'deci'
  63. #define typeMoney 'mone'
  64. #define typeVChar 'vcha'
  65. #define typeVBin 'vbin'
  66. #define typeLChar 'lcha'
  67. #define typeLBin 'lbin'
  68. #define typeDiscard 'disc'
  69.  
  70. /* "dummy" types for DBResultsToText */
  71. #define typeUnknown 'unkn'
  72. #define typeColBreak 'colb'
  73. #define typeRowBreak 'rowb'
  74.  
  75. /* pass this in to DBGetItem for any data type */
  76. #define typeAnyType (DBType)0
  77.  
  78. /* infinite timeout value for DBGetItem */
  79.  
  80.  kDBWaitForever = -1,
  81.  
  82. /*  flags for DBGetItem  */
  83.  kDBLastColFlag = 0x0001,
  84.  kDBNullFlag = 0x0004
  85. };
  86.  
  87. typedef OSType DBType;
  88.  
  89. /* structure for asynchronous parameter block */
  90. struct DBAsyncParamBlockRec {
  91.  ProcPtr completionProc;        /* pointer to completion routine */
  92.  OSErr result;                    /* result of call */
  93.  long userRef;                    /* for application's use */
  94.  long ddevRef;                    /* for ddev's use */
  95.  long reserved;                    /* for internal use */
  96. };
  97.  
  98. typedef struct DBAsyncParamBlockRec DBAsyncParamBlockRec;
  99. typedef DBAsyncParamBlockRec *DBAsyncParmBlkPtr;
  100.  
  101. /* structure for resource list in QueryRecord */
  102. struct ResListElem {
  103.  ResType theType;                /* resource type */
  104.  short id;                        /* resource id */
  105. };
  106.  
  107. typedef struct ResListElem ResListElem;
  108. typedef ResListElem *ResListPtr, **ResListHandle;
  109.  
  110. /* structure for query list in QueryRecord */
  111. typedef Handle **QueryListHandle;
  112.  
  113. struct QueryRecord {
  114.  short version;                    /* version */
  115.  short id;                        /* id of 'qrsc' this came from */
  116.  Handle queryProc;                /* handle to query def proc */
  117.  Str63 ddevName;                /* ddev name */
  118.  Str255 host;                    /* host name */
  119.  Str255 user;                    /* user name */
  120.  Str255 password;                /* password */
  121.  Str255 connStr;                /* connection string */
  122.  short currQuery;                /* index of current query */
  123.  short numQueries;                /* number of queries in list */
  124.  QueryListHandle queryList;        /* handle to array of handles to text */
  125.  short numRes;                    /* number of resources in list */
  126.  ResListHandle resList;            /* handle to array of resource list elements */
  127.  Handle dataHandle;                /* for use by query def proc */
  128.  long refCon;                    /* for use by application */
  129. };
  130.  
  131. typedef struct QueryRecord QueryRecord;
  132. typedef QueryRecord *QueryPtr, **QueryHandle;
  133.  
  134. /* structure of column types array in ResultsRecord */
  135. typedef Handle ColTypesHandle;
  136.  
  137. /* structure for column info in ResultsRecord */
  138. struct DBColInfoRecord {
  139.  short len;
  140.  short places;
  141.  short flags;
  142. };
  143.  
  144. typedef struct DBColInfoRecord DBColInfoRecord;
  145.  
  146. typedef Handle ColInfoHandle;
  147.  
  148. /* structure of results returned by DBGetResults */
  149. struct ResultsRecord {
  150.  short numRows;                    /* number of rows in result */
  151.  short numCols;                    /* number of columns per row */
  152.  ColTypesHandle colTypes;        /* data type array */
  153.  Handle colData;                /* actual results */
  154.  ColInfoHandle colInfo;            /* DBColInfoRecord array */
  155. };
  156.  
  157. typedef struct ResultsRecord ResultsRecord;
  158.  
  159.  
  160. #ifdef __cplusplus
  161. extern "C" {
  162. #endif
  163. pascal OSErr InitDBPack(void)
  164.  = {0x3F3C,0x0004,0x303C,0x0100,0xA82F}; 
  165. pascal OSErr DBInit(long *sessID,ConstStr63Param ddevName,ConstStr255Param host,
  166.  ConstStr255Param user,ConstStr255Param passwd,ConstStr255Param connStr,
  167.  DBAsyncParmBlkPtr asyncPB)
  168.  = {0x303C,0x0E02,0xA82F}; 
  169. pascal OSErr DBEnd(long sessID,DBAsyncParmBlkPtr asyncPB)
  170.  = {0x303C,0x0403,0xA82F}; 
  171. pascal OSErr DBGetConnInfo(long sessID,short sessNum,long *returnedID,long *version,
  172.  Str63 ddevName,Str255 host,Str255 user,Str255 network,Str255 connStr,long *start,
  173.  OSErr *state,DBAsyncParmBlkPtr asyncPB)
  174.  = {0x303C,0x1704,0xA82F}; 
  175. pascal OSErr DBGetSessionNum(long sessID,short *sessNum,DBAsyncParmBlkPtr asyncPB)
  176.  = {0x303C,0x0605,0xA82F}; 
  177. pascal OSErr DBSend(long sessID,char *text,short len,DBAsyncParmBlkPtr asyncPB)
  178.  = {0x303C,0x0706,0xA82F}; 
  179. pascal OSErr DBSendItem(long sessID,DBType dataType,short len,short places,
  180.  short flags,void *buffer,DBAsyncParmBlkPtr asyncPB)
  181.  = {0x303C,0x0B07,0xA82F}; 
  182. pascal OSErr DBExec(long sessID,DBAsyncParmBlkPtr asyncPB)
  183.  = {0x303C,0x0408,0xA82F}; 
  184. pascal OSErr DBState(long sessID,DBAsyncParmBlkPtr asyncPB)
  185.  = {0x303C,0x0409,0xA82F}; 
  186. pascal OSErr DBGetErr(long sessID,long *err1,long *err2,Str255 item1,Str255 item2,
  187.  Str255 errorMsg,DBAsyncParmBlkPtr asyncPB)
  188.  = {0x303C,0x0E0A,0xA82F}; 
  189. pascal OSErr DBBreak(long sessID,Boolean abort,DBAsyncParmBlkPtr asyncPB)
  190.  = {0x303C,0x050B,0xA82F}; 
  191. pascal OSErr DBGetItem(long sessID,long timeout,DBType *dataType,short *len,
  192.  short *places,short *flags,void *buffer,DBAsyncParmBlkPtr asyncPB)
  193.  = {0x303C,0x100C,0xA82F}; 
  194. pascal OSErr DBUnGetItem(long sessID,DBAsyncParmBlkPtr asyncPB)
  195.  = {0x303C,0x040D,0xA82F}; 
  196. pascal OSErr DBKill(DBAsyncParmBlkPtr asyncPB)
  197.  = {0x303C,0x020E,0xA82F}; 
  198. pascal OSErr DBGetNewQuery(short queryID,QueryHandle *query)
  199.  = {0x303C,0x030F,0xA82F}; 
  200. pascal OSErr DBDisposeQuery(QueryHandle query)
  201.  = {0x303C,0x0210,0xA82F}; 
  202. pascal OSErr DBStartQuery(long *sessID,QueryHandle query,ProcPtr statusProc,
  203.  DBAsyncParmBlkPtr asyncPB)
  204.  = {0x303C,0x0811,0xA82F}; 
  205. pascal OSErr DBGetQueryResults(long sessID,ResultsRecord *results,long timeout,
  206.  ProcPtr statusProc,DBAsyncParmBlkPtr asyncPB)
  207.  = {0x303C,0x0A12,0xA82F}; 
  208. pascal OSErr DBResultsToText(ResultsRecord *results,Handle *theText)
  209.  = {0x303C,0x0413,0xA82F}; 
  210. pascal OSErr DBInstallResultHandler(DBType dataType,ProcPtr theHandler,
  211.  Boolean isSysHandler)
  212.  = {0x303C,0x0514,0xA82F}; 
  213. pascal OSErr DBRemoveResultHandler(DBType dataType)
  214.  = {0x303C,0x0215,0xA82F}; 
  215. pascal OSErr DBGetResultHandler(DBType dataType,ProcPtr *theHandler,Boolean getSysHandler)
  216.  = {0x303C,0x0516,0xA82F}; 
  217. #ifdef __cplusplus
  218. }
  219. #endif
  220.  
  221. #endif
  222.